home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok22.lha / Lists / TestLists.mod < prev    next >
Text File  |  1993-08-15  |  4KB  |  172 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    TestLists.mod
  4.     :Contents.   test module for Lists [bne]
  5.     :Author.     Nicolas Benezan [bne]
  6.     :Address.    Postwiesenstr. 2, D7000 Stuttgart 60
  7.     :Phone.      711/333679
  8.     :Copyright.  Public Domain
  9.     :Language.   Modula-2
  10.     :Translator. M2Amiga A+L V3.2d
  11.     :Imports.    Lists2.0, MemSystem1.2 [bne]
  12.     :History.    V1.0b [bne] 11.May.1989
  13.  
  14. **********************************************************************)
  15.  
  16. MODULE TestLists;
  17.  
  18. FROM Conversions IMPORT ValToStr;
  19. FROM InOut       IMPORT WriteString,WriteInt,WriteLn;
  20. FROM Lists       IMPORT List, EntryPtr, ListsAllocProc, ListsDeallocProc,
  21.                         CreateList, DeleteList, AppendEntryC, InsertEntryC,
  22.                         DeleteEntry, ReadEntryC, ReplaceEntryC,
  23.                         LocateEntryAbs, LocateEntryRel, Successor,
  24.                         Predecessor, FirstEntry, LastEntry, EntriesInList;
  25. FROM MemSystem   IMPORT NoCareAllocate, Deallocate;
  26. FROM Str         IMPORT Concat;
  27.  
  28. TYPE
  29.   String=ARRAY [0..20] OF CHAR;
  30.  
  31. VAR
  32.   list:List;
  33.   entry:EntryPtr;
  34.   dummy:BOOLEAN; (* NoCareAllocate() never fails *)
  35.  
  36. PROCEDURE PrintEntry;
  37.   VAR
  38.     Data:String;
  39.   BEGIN
  40.     WriteString("  ");
  41.     ReadEntryC(list,entry,Data);
  42.     WriteString(Data);
  43.     WriteLn;
  44.   END PrintEntry;
  45.  
  46. PROCEDURE PrintList;
  47.   BEGIN
  48.     WriteString("List has ");
  49.     WriteInt(EntriesInList(list),1);
  50.     WriteString(" entries:");
  51.     WriteLn;
  52.     IF EntriesInList(list)#0 THEN
  53.       entry:=FirstEntry(list);
  54.       REPEAT
  55.         PrintEntry;
  56.       UNTIL NOT Successor(entry);
  57.     END;
  58.     WriteLn;
  59.   END PrintList;
  60.  
  61. PROCEDURE InitList;
  62.   BEGIN
  63.     dummy:=CreateList(list);
  64.     WriteString("List created.");
  65.     WriteLn;
  66.     PrintList;
  67.   END InitList;
  68.  
  69. PROCEDURE AppendTest;
  70.   VAR
  71.     Num:INTEGER;
  72.     Data,NumStr,Text:String;
  73.   BEGIN
  74.     WriteString("Appending 10 entries...");
  75.     WriteLn;
  76.     Text:="Entry No. ";
  77.     FOR Num:=1 TO 10 DO
  78.       ValToStr(Num,FALSE,NumStr,10,1," ",dummy);
  79.       Data:=Text;
  80.       Concat(Data,NumStr);
  81.       AppendEntryC(list,Data);
  82.     END;
  83.     PrintList;
  84.   END AppendTest;
  85.  
  86. PROCEDURE DiscardList;
  87.   BEGIN
  88.     DeleteList(list);
  89.     WriteString("List deleted.");
  90.     WriteLn;
  91.     WriteString("End of Test.");
  92.     WriteLn;
  93.   END DiscardList;
  94.  
  95. PROCEDURE InsertTest;
  96.   VAR
  97.     Data:String;
  98.   BEGIN
  99.     WriteString("Inserting at the head...");
  100.     WriteLn;
  101.     Data:="Inserted head";
  102.     InsertEntryC(list,FirstEntry(list),Data);
  103.     WriteString("Inserting in the middle...");
  104.     WriteLn;
  105.     Data:="Inserted middle";
  106.     InsertEntryC(list,LocateEntryAbs(list,6),Data);
  107.     PrintList;
  108.   END InsertTest;
  109.  
  110. PROCEDURE ReplaceTest;
  111.   VAR
  112.     Data:String;
  113.   BEGIN
  114.     WriteString("Replacing an Entry...");
  115.     WriteLn;
  116.     Data:="Overwritten entry";
  117.     ReplaceEntryC(list,LocateEntryAbs(list,6),Data);
  118.     PrintList;
  119.   END ReplaceTest;
  120.  
  121. PROCEDURE DeleteTest;
  122.   BEGIN
  123.     WriteString("Deleting previously added entries...");
  124.     WriteLn;
  125.     DeleteEntry(list,FirstEntry(list));
  126.     DeleteEntry(list,LocateEntryAbs(list,5));
  127.     PrintList;
  128.   END DeleteTest;
  129.  
  130. PROCEDURE LocateTest;
  131.   BEGIN
  132.     WriteString("Scanning backward...");
  133.     WriteLn;
  134.     entry:=LastEntry(list);
  135.     REPEAT
  136.       PrintEntry;
  137.     UNTIL NOT Predecessor(entry);
  138.     WriteString("Positioning on 5th Entry");
  139.     WriteLn;
  140.     entry:=LocateEntryAbs(list,4);
  141.     PrintEntry;
  142.     WriteString("browsing 3 backward");
  143.     WriteLn;
  144.     dummy:=LocateEntryRel(list,entry,-3);
  145.     PrintEntry;
  146.     WriteString("browsing 7 forward");
  147.     WriteLn;
  148.     dummy:=LocateEntryRel(list,entry,7);
  149.     PrintEntry;
  150.     WriteString("LocateEntry() beyond tail (error)");
  151.     WriteLn;
  152.     IF LocateEntryRel(list,entry,2) THEN
  153.       WriteString("WARNING: No error detected!");
  154.     ELSE
  155.       WriteString("Ok. Error reported correctly");
  156.     END;
  157.     WriteLn;
  158.   END LocateTest;
  159.  
  160. BEGIN
  161.   ListsAllocProc:=NoCareAllocate;
  162.   ListsDeallocProc:=Deallocate;
  163.   InitList;
  164.   AppendTest;
  165.   InsertTest;
  166.   ReplaceTest;
  167.   DeleteTest;
  168.   LocateTest;
  169.   DiscardList;
  170. END TestLists.
  171.  
  172.